package main

import (
	"gitee.com/go_library/common"
	"gitee.com/go_library/common/log"
	"github.com/labstack/echo"
)

func main() {
	// 初始化配置和日志
	common.InitConfig("data/config")
	log.InitLog("data/runtime/log")

	e := echo.New()
	log.InitLogger(e.Logger, "data/runtime/log") // 设置echo的日志
	e.Renderer = common.NewRenderer("data/template") // 设置渲染器

	e.Use(common.ResultHandler) // 使用结果处理中间件

	log.Debug.Println("写入日志") // 向指定的日志中写内容

	e.Any("/hello", func(c echo.Context) error {
		name := c.QueryParam("name")
		if name == "" {
			return common.NewCalledError("姓名不能为空", 100001) // 调用错误会将错误信息和错误码返回给用户
		}
		return nil // 成功的操作，可以只返回nil
	})

	e.Any("/show", func(c echo.Context) error {
		data, err := showTables()
		if err != nil {
			return err // 只需要返回错误
		}
		return common.SuccessData(c, data) // 成功时返回数据
	})

	e.Logger.Fatal(e.Start(":1323"))
}

func showTables() ([]string, error) {
	data := make([]string, 0)
	if err := common.Sql.Select(&data, "SHOW TABLES"); err != nil {
		return nil, common.NewInternalError(err) // 处理错误并且写日志
	}
	return data, nil
}